home *** CD-ROM | disk | FTP | other *** search
- • 160k ADFS discs for the Archimedes? If you have upgraded to the
- Archimedes from a Master, or even a Beeb with ADFS, you might have some
- 5.25“ discs you want to transfer. According to the manuals, the
- Archimedes will only read and write to 640k (L) format, Arthur 800k (D)
- format, or the RISC-OS 800k (E) format using either 3.5” or 5.25“ discs
- (80T). However, the Master could read and write 40T 160k (S) format,
- 80T 320k (M) format, or 80T 640k (L) format discs. I discovered by
- accident that the Archimedes will quite happily read 5.25” 160k (S)
- discs in 40T mode, and in fact save them − I have not been able to try
- out 320k discs since I do not have any. You cannot, however, format
- discs at either 160k or 320k on the Archimedes but then why would you
- want to anyway? Chris Hughes (Wakefield BBC Micro User Group).
- 4.01
- • Apocalypse Tips − Progressing from planet to planet is really simple.
- At the start of the game, a map of your selected planet is displayed.
- All the objects on the planet’s surface are represented by coloured
- dots, about 80% of which must be destroyed for your craft to be
- withdrawn and for you to be allocated another planet.
- 4.01
- As you progress through the game and return to the ‘Guild of Spacings’
- you will be given various add-ons for your ship. These include a super-
- cooler for your laser-canon and better shielding. It is vital that you
- have these if you intend to progress at a reasonable pace, so it is
- advisable to get them as soon as possible. Remember, you can only
- return a maximum of five times before being rejected by the Guild. When
- you have destroyed your 80% or so, you will automatically be withdrawn
- by the Guild − this may take some time so don’t give up too quickly!
- 4.01
- If you prefer rather more action and less running away, the following
- lines of the BASIC file ‘!Apocalyps.Apocalypse’ can be changed.
- 4.01
- Line 290 is your starting score.
- 4.01
- Replace line 330 with: 330 !shieldcharge=16 :
- !rapidturnF=1:!guntempcooler=0
- 4.01
- Now delete lines 340 to 380 inclusive for all the extra features and
- (very) strong shields.
- 4.01
- Replace line 770 with: UNTIL 0 for infinite lives. At line 1970
- !impcounter is the number of objects you have shot, which determines how
- many you have to go before advancing to the next planet. For instant
- withdrawal, replace 1970 with: 1970 !impcounter=10000.
- 4.01
- Line 6910 is how many times you can return to the guild before rejection
- (this is normally 5).
- 4.01
- • HFORM v1.72 bug or feature? If you try to format an ST506 hard disc
- that has had a different profile (e.g. it was used on a PC beforehand)
- with the Acorn HFORM program supplied on the RISC-OS Supplement Disc,
- the new disc shape option will not be acknowledged and so the full
- capacity of the drive may not be realised. This can be overcome by
- removing the line that reads:
- 4.01
- 2130 IF cyl%=0 IF head%=0 IF Formatted% GOTO 2180
- 4.01
- Brian Oliver.
- 4.01
- • Hostages cheat mode − If you hold down the <R>, <U>, <T> and <H> keys
- once the title screen has loaded and press <return>, you will enter into
- the cheat mode. This allows you to jump to either section two or three
- of the game with three hostages and seven terrorists.
- 4.01
- • RAM discs for the PC Emulator − It is possible to create a hard disc
- partition in any filing system. For example, by altering the !PC.!Run2
- file so that the path for Drive D is ‘RAM:$.RamDisc’ and using the FDISK
- program to create a RAMFS hard disc partition, you can obtain any size
- RAM disc you require _ memory and pages sizes permitting. Michael Ben-
- Gershon.
- 4.01
- • Reading a system variable from BASIC − The question was, “I’ve got a
- system variable being set in the !Run obey file:
- 4.01
- Set MaxNumberOfFonts 32
- 4.01
- and I want to be able to read this value into a BASIC variable but when
- I use:
- 4.01
- value% = VAL (“<MaxNumberOfFonts>”)
- 4.01
- it produces the error ‘Variable not found’, because it takes the ‘<’
- character as meaning ‘less than’ rather than ‘start of system variable’.
- Using the BASIC keyword EVAL has the same effect.
- 4.01
- The first thing we need to do is to extract the value of the system
- variable into a string that we can manipulate. After searching through
- the PRM volume II, I eventually found OS_ReadVarVal (SWI&23) on page
- 750. On entry, R0 points to the name of the system variable to be read,
- R1 points to a suitable buffer to store the string in, R2 is the maximum
- length of this buffer, R3 is set to 0 to use the first occurance of the
- named system variable, and R4 is set to 3 so that an expanded string is
- returned in the buffer.
- 4.01
- On exit, we should now have the value of the system variable in the form
- of a string. The next task is to convert this string into an integer,
- and this is easily performed by using OS_ReadUnsigned (SWI &21) on page
- 585. On entry, R0 is set to 0 so that the base number used is assumed
- to be 10 unless the string indicates otherwise, R1 is the pointer to the
- string (note that this is the same as R1 for OS_ReadVarVal, which is
- preserved on exit). On exit R2 contains the value of the system
- variable as an integer, using only two SWI calls.
- 4.01
- This is easily implemented in both BASIC and ARM assembler.
- 4.01
- In BASIC this can be achieved with 4 instructions:
- 4.01
- MaxBufferLength = 16
- 4.01
- DIM BufferPtr MaxBufferLength
- 4.01
- SYS “OS_ReadVarVal”, “MaxNumberOfFonts”, BufferPtr,
- MaxBufferLength,0,3
- 4.01
- SYS “OS_ReadUnsigned”,0,BufferPtr TO ,,value%
- 4.01
- and if you want to do in Arm assembler, then only eight instructions are
- necessary:
- 4.01
- ...
- 4.01
- ADR R0, SystemVariablePtr ; point to system variable
- 4.01
- ADR R1, BufferPtr; point to buffer
- 4.01
- MOV R2, #MaxBufferLength ; length of buffer
- 4.01
- MOV R3, #0 ; use first one found
- 4.01
- MOV R4, #3 ; expand fully
- 4.01
- SWI XOS_ReadVarVal ; R1 preserved
- 4.01
- MOV R0, #0 ; use default base
- 4.01
- SWI XOS_ReadUnsigned ; R2 = value%
- 4.01
- SystemVariablePTr = “MaxNumberOfFonts”, 0 ; note no ‘<’ or ‘>’ are
- used
- 4.01
- ALIGN
- 4.01
- MaxBufferLength * 16
- 4.01
- BufferPtr % MaxBufferLength ; reserve MaxBufferLength
- 4.01
- ALIGN ; bytes of workspace
- 4.01
- To give a quick example of its use. ‘SetMaxNumberOfFonts 16’ gives
- value% = 16. ‘SetMaxNumberOfFonts &20 gives value% = 32.
- 4.01
- This may be of use to programmers, as it allows constants to be set up
- in the !Run obey file and users can modify them to fit their require
- ments, without having to modify the program itself. John ‘Lofty’
- Wallace.
- 4.01
- • System Variables for the Filer Module (Archive 3.11 p7) − The problem
- with the Filer module not allowing you to include system variables can
- be solved a lot easier (and without taking up any valuable RMA space).
- 4.01
- I like to use icons for the directories which contain the third party
- applications, demos, utilities, etc. This meant using an application
- directory and I wanted a general purpose !Run obey file to open the
- directory viewer (using Filer_OpenDir). However, I came across the same
- problem as Simon Callan. The solution I present here was passed on to
- me by Paul Fellows (who wrote ‘Archimedes Basic Compiler’ amongst other
- things) and so I don’t wish to take the credit for such a neat idea.
- 4.01
- So that I don’t have the !Run, !Sprites, etc with the actual programs I
- want to view, I create a directory ‘_’ inside that application directory
- to hold them. Thus my !Run obey file reads as follows:
- 4.01
- |!Run obey file
- 4.01
- |
- 4.01
- IconSprites <Obey$Dir>.!Sprites
- 4.01
- Set Alias$OpenDir Filer_OpenDir <Obey$Dir>._
- 4.01
- OpenDir
- 4.01
- Setting a command string as an ‘Alias’ will expand any system variables
- within that command string. This gets around the problem which Simon
- describes, and also means that you don’t need to run a program every
- time you switch the machine on. John ‘Lofty’ Wallace.
- 4.01
-
-